Plan de Estudio Blazor ASP.NET Core .NET 9 2025
Recientemente estoy retomando la programación y decidí irme por la ruta Blazor SSR y Hybrid para desarrollo multiplataforma con C#. Este es mi plan de estudios:
Requerimientos de mi nuevo conjunto de tecnologías de desarrollo:
- Prioridad a web con buen desempeño en SEO.
- Desarrollo de proyectos medianos y pequeños de manera independiente o con pocos colaboradores.
- Posibilidad de migrar casi 100% del código para hacer aplicación de escritorio y móvil.
- Desarrollo unificado en C#.
Única opción a 2025:
Blazor con SSR + Blazor Hybrid (.NET MAUI)
Prioridades:
- ★★★ Alta prioridad: Fundamentales para aplicaciones pequeñas y medianas.
- ★★ Intermedia: Valiosos para ampliar conocimientos.
- ★ Baja: No necesarios por el momento.
Lenguajes
- ★★★ C# 14+
- ★★★ LINQ
- ★★★ Nulables
- ★★★ Registros y Coincidencia de Patrones
- ★★★ Asincronía
- ★★★ HTML
- ★★★ CSS
- ★★ JavaScript Mínimo: Lo básico para algunas pequeñas cosas y para integraciones con librerías externas usando JS Interop.
Backend con ASP.NET Core 9+
- ★★★ Dependency Injection: Similar a interfaces pero más práctica.
- ★★★ Text.Json
- ★★★ Autenticación con Roles o Políticas. Elegir:
- ★★★ Core Identity: Autenticación en servidor usando cookies (Blazor Server y SSR).
- ★★ JWT + OAuth2: Autenticación basada en tokens para acceso a APIs desde el cliente (Blazor WebAssembly).
- ★★★ API. Elegir:
- ★★★ OpenAPI: Para documentar y probar APIs. Compatible con los otros 3.
- ★★★ .NET Core Web API: Más controles de acceso y fácilidad de pruebas. Código más estructurado.
- ★★ Minimal API: Más simple, fácil de implementar y rápida. Útil para aplicaciones pequeñas y microservicios.
- ★ GraphQL: APIs con múltiples clientes que requieren datos personalizados, GraphQL puede ser más eficiente que REST.
- ★★★ ORM. Elegir:
- ★★★ Entity Framework Core: Preferido por fácilidad y familiaridad.
- ★★ Dapper: ORM que podría dar más velocidad si fuera necesario, pero es menos mantenible.
- ★★★ Cacheo. Elegir:
- ★★★ Memory Cache: IMemoryCache y HybridCache.
- ★ Redis: Si se usa autenticación con tokens o cargas pesadas. Es una caché compartido mejora rendimiento.
- ★★★ Validación. Elegir:
- ★★★ Atributos
- ★★ FluentValidation: Aunque es más complicado que usar atributos y no aporta muchas ventajas en validaciones simples.
- ★★★ IOptions<T>: Manejo de configuraciones separadas y fácil cambio, por ejemplo appsettings.Development.json, appsettings.Production.json, etc.
- ★★ AutoMapper: Util para aplanar objetos complejos en objetos planos DTO y como capa adicional de seguridad.
- ★ Razor Pages: Útil para páginas simples, pero es casi idéntico en ventajas a Blazor SSR sin aportar adicionales. Es preferible manejar un solo paradigma con Blazor.
- ★ IHostedService: Tareas en segundo plano.
- ★ IA: Azure OpenAI, embeddings, etc.
Front End
- ★★★ Blazor SSR: Carga diferida y prerenderizado.
- ★★★ Blazor WebAssembly: Interactividad en cliente.
- ★★★ Blazor Hybrid: En combinación con MAUI permite usar código Blazor para aplicaciones de móvil y escritorio con acceso a todo el sistema y publicables en tiendas.
- ★★★ Temas Blazor: Componentes, rutas y su seguridad, formularios y su validación e inyección de servicios.
- ★★★ Manejo de Estado: Scoped (por usuario), Singleton (global), Transient (cada vez) guardando información en LocalStorage y ProtectedLocalStorage.
- ★★★ Blazored: Colección de componentes para Blazor: Local Storage, Session Storage, Modal Dialog, Toast (Mensajes notificación inferiores), FluentValidation en Blazor.
- ★★★ Diseño. Elegir:
- ★★★ Tailwind CSS: Reemplaza Bootstrap, más moderno, más limpio, muy usado hoy. Componentes con parámetros, transiciones, accessibilidad y responsibidad.
- ★★ Fluent UI Blazor: Componentes basados en el estilo de Microsoft. De peso intermedio.
- ★★ MudBlazor: Para diseño más listo y componentes Blazor ya funcionales, pero hace el sitio más pesado.
- ★★ Blazor Server: Usa SignalR para conexiones permanentes para aplicaciones que requieren actualizaciones en tiempo real. Pesado para el servidor si hay muchos usuarios.
- ★ PWA: Aplicación web instalable en móvil y escritorio. Más ligera que Blazor Hybrid, pero más limitada en el acceso al sistema. No es publicable en la tienda iOS.
- ★ WebAssembly Interop: Para interacciones más avanzadas o rendimiento en cliente. Especialmente si se quiere integrar bibliotecas externas no .NET.
Arquitectura
- ★★★ Modularización: Separar la solución en proyectos: Core, Application, Infrastructure, UI (Blazor) y Mobile (MAUI) para facilitar despliegue y pruebas.
- ★★★ Arquitectura por Cortes Verticales (VSA): Funcionalidad del sistema está separada en un módulo con sus propios controladores, validaciones y lógica de negocio.
- ★★ Ambientes: Configuraciones distintas para desarrollo, pruebas y producción.
- ★★ Integración y Despliegue Continuo: Al subir un cambio, compila, prueba, valida y publica automáticamente. Elegir:
- ★ GitHub Actions
- ★ Azure DevOps
- ★ Arquitectura Limpia: Código escalable y desacoplado, pero más complicada de implementar e innecesaria en proyectos medianos y pequeños.
- ★ CQRS + Mediator Pattern: Añade complejidad innecesaria al código de lectura/escritura en base de datos.
- ★ Docker: Es útil para desplegar la aplicación a contenedores propios con su propia configuración. No es necesario si se publica en servidor o en Azure.
- ★ Feature Flags: Es solo un nombre para activar/desactivar funciones con condiciones. Se puede hacer con lógica simple en clases estáticas, config o base de datos.
- ★ MVVM: Si el enfoque es reusar casi el 100% del código y Blazor ya trae su propio patrón de separación de código, agregar MVVM para integraciones con MAUI es innecesario.
Supervisión y Pruebas
- ★★★ Pruebas Unitarias: Con xUnit principalmente a lógica de negocio crítica.
- ★★★ Análisis de Rendimiento: Diagnostic Tools de Visual Studio y Application Insights.
- ★★★ Telemetría: Registro de eventos y errores con ILogger. Elegir:
- ★★★ Application Insights: Es relativamente económico, se puede usar para cualquier app y tiene un excelente portal y herramientas con las que ya estoy familiarizado.
- ★ OpenTelemetry: No le veo mayores ventajas frente Application Insights aparte de que es gratis.
- ★★★ Monitoreo y Alertas Automáticas. Elegir:
- ★★★ Azure Monitor
- ★★ IHealthCheck: Verificación de salud de la aplicación y servicios conectados con punto de consulta personalizado. Util en aplicaciones sencillas que no estén en Azure.
- ★ Prometheus + Grafana: Util para sitios fuera de Azure y que estén usando OpenTemetry.
- ★★ Limitaciones por IP: Microsoft.AspNetCore.RateLimiting.
- ★ Pruebas Fin a Fin (E2E): Con Playwright. Requieren mucha infraestructura y tiempo.
Herramientas
- ★★★ GitHub con Dependabot
- ★★★ Visual Studio 2022: Mejor experiencia para .NET, C#, MAUI, Blazor y Web API.
- ★★★ Cargas de Trabajo: ASP.NET y web, Azure, escritorio de .NET, .NET MAUI y Datos.
- ★★★ Extensiones: SonarQube, Middle Click Scroll, Collapse Comments, Collapse All Regions, SQLite/SQL Compact Toolbox, Disable No Source Av. Tab, Tailwind CSS VS2022.
- ★★★ Administrador de SQL Server. Elegir:
- ★★★ Visual Studio
- ★ Server Management Studio
- ★★★ Postman
- ★★★ Emuladores: Android (Android SDK) desde Visual Studio Installer y Mac en la nube (MacStadium).
- ★★★ Productividad AI:
- ★★★ ChatGPT
- ★★ Copilot: 10 USD al mes. Solo usar si mejora significativamente la productividad.
- ★★★ Seguimiento a Tareas y Decisiones:
- ★★★ Excel con filtros de prioridad tareas grandes y Notepad++ para pendientes urgentes.
- ★★ GitHub Projects
- ★ Notion
Me tarde un buen rato investigando y diseñando este plan entonces decidí compartirlo. ¡Espero te haya sido util!